<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;

class BackController extends Controller
{
    public function login(Request $request)
    {
        if($request->isMethod('post')){
            $this->validate($request, [
                'username' => 'required|min:2|max:8',
                'password' => 'required|min:2|max:8',
                'captcha' => 'required|captcha', // 注意： captcha 规则不是laravel自带的，是验证类提供的。
            ]);
            // 验证通过，下面的代码执行
            // 1. 接收用户名和密码 2. 查询数据库当前用户是否存在 3. 如果存在，则在验证密码是否合法 4. 如果合法，则将登陆的标识记录到session里面
            // 现在使用的是laravel，那么可以使用laravel自带的auth模块（Auth门面）完成验证
            // 2. guard() 参数是用来设置 Auth门面去哪个表里面做用户的验证 以及成功验证后的用户登录标识保存在哪里？需要在配置文件设定
            // 3. attempt() 参数是当前登录的用户名和密码，如果当前的用户名和密码验证通过，返回值为true 否则为false 第二个餐后速度：代表是否记住密码
            $userInfo = $request->only(['username', 'password']);
            $isRemember = $request->get('online'); // 如果存在on, 不存在为''
            $status = Auth::guard('back')->attempt($userInfo, $isRemember); // 1. 做配置项 2. 修改模型
            // 注意：我们通过Auth可以做验证操作 但是对模型是有要求，要实现一些接口
            if($status){
                // 登录成功  Auth会自动的记录用户的信息（到底记录在哪里，需要看 guard参数）
                return redirect('/admin/index');
            }else{
                // 登录失败 sweet Alert 插件
                return redirect()->back();
            }
        }
        // 实现用户登录的逻辑
        return view('admin.back.login');
    }

    public function logout()
    {
        // 如何退出？ 清除cookie和session
        Auth::guard('back')->logout(); // logout方法会自动的清除cookie和session
        return redirect('/back/login');
    }
}
